package com.danjinwulian.device.mapper;

import com.danjinwulian.common.core.domain.entity.IotDevice;

import java.util.List;

/**
 * 设备表 数据层
 * 
 * @author ken.h
 */
public interface IotDeviceMapper
{
    /**
     * 根据条件分页查询设备列表
     * 
     * @param iotDevice 设备信息
     * @return 设备信息集合信息
     */
    public List<IotDevice> selectDeviceList(IotDevice iotDevice);

    public int selectDeviceCount();

    /**
     * 通过房间名称查询设备
     * 
     * @param roomName 房间名称
     * @return 设备对象信息
     */
    public IotDevice selectDeviceByRoomName(String roomName);

    /**
     * 校验设备名称是否唯一
     *
     * @param deviceName 设备名称
     * @return 结果
     */
    public int checkDeviceNameUnique(String deviceName);

    /**
     * 校验房间名称是否唯一
     *
     * @param iotDevice 设备信息
     * @return 结果
     */
    public int checkRoomNameUnique(IotDevice iotDevice);

    /**
     * 通过设备ID查询设备
     * 
     * @param deviceId 设备ID
     * @return 设备对象信息
     */
    public IotDevice selectDeviceById(Long deviceId);

    public IotDevice selectDeviceByDeviceName(String deviceName);

    /**
     * 新增设备信息
     * 
     * @param iotDevice 设备信息
     * @return 结果
     */
    public int insertDevice(IotDevice iotDevice);

    /**
     * 修改设备信息
     * 
     * @param iotDevice 设备信息
     * @return 结果
     */
    public int updateDevice(IotDevice iotDevice);

    /**
     * 通过设备ID删除设备
     * 
     * @param deviceId 设备ID
     * @return 结果
     */
    public int deleteDeviceById(Long deviceId);

    /**
     * 批量删除设备信息
     * 
     * @param deviceIds 需要删除的设备ID
     * @return 结果
     */
    public int deleteDeviceByIds(Long[] deviceIds);

    public List<IotDevice> selectOfflineExceptionDeviceList();

    public List<IotDevice> selectPoweroffExceptionDeviceList();
}
